/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package Controller;

import Model.Cliente;
import Model.Item;
import Model.Venda;
import View.ArmazemView;
import java.util.ArrayList;

/**
 *
 * @author Ricardo
 */
public class Control {
    private ArmazemView view;
    private ArrayList<Cliente> clientes = new ArrayList<>();
    private ArrayList<Item> itens = new ArrayList<>();
    private ArrayList<Venda> vendas = new ArrayList<>();
  
    
    public Control(ArmazemView view){
        this.view = view;
    }
    
    public void insertCliente(){
        Cliente novo_cliente = new Cliente();
        novo_cliente.setNome(view.getTextNomeCliente().getText());
        novo_cliente.setTelefone(view.getTextTelefone().getText());
        novo_cliente.setEndereco(view.getTextEndereco().getText());
        clientes.add(novo_cliente);
        view.getLabelConfirmCliente().setText("Cliente Inserido");
        view.getTextAreaClientes().append(novo_cliente.getNome() + "\n");
    }
    
    public void insertItem(){
        Item novo_item = new Item();
        novo_item.setNome(view.getTextNomeItem().getText());
        novo_item.setPreco(Double.parseDouble(view.getTextPrecoVenda().getText()));
        novo_item.setPreco_compra(Double.parseDouble(view.getTextPrecoCompra().getText()));
        itens.add(novo_item);
        view.getLabelConfirmItem().setText("Item Cadastrado");
        view.getTextAreaItem().append(novo_item.getNome() + "\n");
    }
    
    public void ClearCliente(){
        view.getTextNomeCliente().setText("");
        view.getTextTelefone().setText("");
        view.getTextEndereco().setText("");
        view.getLabelConfirmCliente().setText("");
    }
    
    public void ClearItem(){
        view.getTextNomeItem().setText("");
        view.getTextPrecoVenda().setText("");
        view.getTextPrecoCompra().setText("");
    }
    
    public void calcPrecoCompra(){
        for(Item i : itens){
            if(i.getNome().equals(view.getTextItemCompra().getText())){
                double x = Double.parseDouble(view.getTextQuantidadeCompra().getText());
                view.getLabelPrecoCompra().setText("Preço: " + (i.getPreco_compra() * x));
            }
        }
    }
    
    public void confirmCompra(){
        for(Item i : itens){
            if(i.getNome().equals(view.getTextItemCompra().getText())){
            i.compra(Integer.parseInt(view.getTextQuantidadeCompra().getText()));
            view.getLabelPrecoCompra().setText("Compra Confirmada");
            }
        }
    }
    
    public void calcPrecoVenda(){
        for(Item i : itens){
            if(i.getNome().equals(view.getTextItemVenda().getText())){
                double x = Double.parseDouble(view.getTextQuantidadeVenda().getText());
                view.getLabelPrecoVenda().setText("Preço: " + (i.getPreco() * x));
            }
        }
    }
    
    public void confirmVenda(){
        for(Cliente j : clientes){
            if(j.getNome().equals(view.getTextClienteVenda().getText())){
                j.venda(itens, vendas, view.getTextItemVenda().getText(), Integer.parseInt(view.getTextQuantidadeVenda().getText()));
                view.getLabelPrecoVenda().setText("Venda Confirmada");
             }
        }
    }
    
    public void geraRelatorioVendas(){
        view.getTextAreaRelatorio().setText("");
        view.getTextAreaRelatorio().setText("Nome do item,Quantidade vendida\n");
        for(Item i : itens ){
            view.getTextAreaRelatorio().append(i.getNome() + "," + i.getQuantidade_vendida() + "\n");
        }
    }
    
    public void geraRelatorioClientes(){
        view.getTextAreaRelatorio().setText("");
        view.getTextAreaRelatorio().setText("Nome do cliente,Produto,Quantidade,Preço pago\n");
        for(Cliente c : clientes){
            for(Venda v : vendas){
                if(c.getNome().equals(v.getNome_cliente())){
                    view.getTextAreaRelatorio().append(c.getNome() + "," + v.getNome_produto() + "," + v.getQuantidade() + "," + v.getPreco_pago() + "\n");
                }
            }
        }
    }
    
    public void geraRelatorioEstoque(){
        view.getTextAreaRelatorio().setText("");
        view.getTextAreaRelatorio().setText("Nome do produto, Quantidade em estoque\n");
        for(Item i : itens) view.getTextAreaRelatorio().append(i.getNome() + "," + i.getQuantidade()+ "\n");
    }
    
    public void geraRelatorioSaida(){
        view.getTextAreaRelatorio().setText("");
        double n = 0;
        for(Item i : itens){
            n = n + (i.getPreco_compra() * (i.getQuantidade() + i.getQuantidade_vendida()));
        }
        view.getTextAreaRelatorio().setText("Dinheiro gasto na compra de produtos: R$" + n);
    }
    
    public void geraRelatorioEntrada(){
        view.getTextAreaRelatorio().setText("");
        double n = 0;
        for(Venda v : vendas){
            n = n + (v.getPreco_pago());
        }
        view.getTextAreaRelatorio().setText("Dinheiro ganho na venda de produtos: R$" + n);
    }
    
    public void geraRelatorioBalanco(){
        view.getTextAreaRelatorio().setText("");
        double n = 0;
        for(Item i : itens){
            n = n + (i.getPreco_compra() * (i.getQuantidade() + i.getQuantidade_vendida()));
        }
        double m = 0;
        for(Venda v : vendas){
            m = m + (v.getPreco_pago());
        }
        double x = m - n;
        view.getTextAreaRelatorio().setText("Balanço: R$" + x);
    }
    
    public void clearRelatorio(){
        view.getTextAreaRelatorio().setText("");
    }
}
